package q1.project.modules.system.tenant.service;

import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.Page;
import org.springframework.stereotype.Service;
import q1.project.core.exception.BusinessException;
import q1.project.modules.system.tenant.dao.TenantDao;
import q1.project.modules.system.tenant.entity.TenantEntity;
import q1.project.modules.system.tenant.model.TenantVm;

/**
 * @author Q1 Team
 */
@Service
@RequiredArgsConstructor
public class TenantServiceImpl implements TenantService {
  private final TenantDao tenantDao;

  @Override
  public Page<TenantVm.TenantResponse> listTenants(TenantVm.TenantQuery query) {
    return null;
  }

  @Override
  public TenantVm.TenantResponse getTenantById(String id) {
    TenantEntity tenantEntity =
        tenantDao.findById(id).orElseThrow(() -> new BusinessException("租户不存在"));
    return convertToResponse(tenantEntity);
  }

  @Override
  public TenantVm.TenantResponse createTenant(TenantVm.TenantCreate tenant) {
    return null;
  }

  @Override
  public TenantVm.TenantResponse updateTenant(TenantVm.TenantCreate tenant) {
    return null;
  }

  @Override
  public void deleteTenant(String id) {}

  private TenantVm.TenantResponse convertToResponse(TenantEntity entity) {
    return new TenantVm.TenantResponse(
        entity.getId(),
        entity.getTenantCode(),
        entity.getTenantName(),
        entity.getTenantType(),
        entity.getIsolationMode(),
        entity.getDatabaseName(),
        entity.getStatus(),
        entity.getAdminUserId(),
        entity.getExpireTime(),
        entity.getMaxUsers(),
        entity.getMaxStorage(),
        entity.getCurrentUsers(),
        entity.getCurrentStorage(),
        entity.getLogoUrl(),
        entity.getDescription(),
        entity.getCustomDomain(),
        entity.getContactEmail(),
        entity.getContactPhone());
  }
}
